home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / simulato / v2_3_mc6.tz / v2_3_mc6 / testfiles / cmpmtest.asm < prev    next >
Assembly Source File  |  1994-05-02  |  2KB  |  68 lines

  1.         org     $1000
  2.  
  3.         movea.l #str1,a0
  4.         jsr     WriteString
  5.  
  6.         movea.l #str1,a0
  7.         movea.l #str2,a1
  8.  
  9.  
  10. loop    cmpm.b  (a0)+,(a1)+
  11.         bne     broke
  12.         cmpi.b  #$0,(a0)
  13.         beq     done
  14.         jmp     loop
  15.  
  16. broke   movea.l #str2,a0
  17.         jsr     WriteString
  18.  
  19. done    movea.l #str3,a0
  20.         jsr     WriteString
  21.  
  22.         move    #228,D7         ;  end routine.
  23.         trap    #14             ;  ends prog.
  24.  
  25. ;===========================================================================
  26. ;   System routines begin here
  27. ;
  28. ;
  29.  
  30. OUTPUT  equ     243
  31.  
  32.         dc.w    0
  33. ;============================================================================
  34. ;
  35. ; WriteString - given the starting address of a string in A0, this routine
  36. ;               will write the string to the screen.  The string must be
  37. ;               terminated by a null byte ($00).
  38. ;               USAGE : JSR WriteString
  39. ;                Given : 1. A0 = Address of first character in string
  40. ;                        2. Last character in string is $00 or NULL
  41. ;
  42. ;
  43.  
  44. WriteString movem.l a0-a6/d0-d7,-(sp) ; save registers
  45.             move.l  a0,a1             ; a0 is overwritten when OUTPUT is called
  46.                                       ;  so keep track of location within the
  47.                                       ;  string using a1
  48.             movea.l a0,a5
  49.             movea.l a0,a6
  50.             move    #OUTPUT,d7         
  51. 1$          adda.l  #1,a6
  52.             move.b  (a1)+,d0          ; get a byte
  53.             tst.b   d0                ; check for null
  54.             beq     2$   
  55.             bra     1$
  56. 2$          trap    #14               ; print it
  57.             movem.l  (sp)+,d7-d0/a6-a0 ; restore registers
  58.             rts
  59.  
  60. ; DATA BEGINS HERE
  61.  
  62. str1    dc.b    'This is a message',13,10,0
  63. str2    dc.b    'This didn''t work',13,10,0
  64. str3    dc.b    'exiting',13,10,0
  65.  
  66.  
  67.         end
  68.